package com.xulu.romance.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xulu.romance.pojo.Question;
import com.xulu.romance.vo.ArchiveQuestionVo;
import com.xulu.romance.vo.QuestionTopVo;
import com.xulu.romance.vo.QuestionVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * @version 1.0
 * @Author xiaoxulu
 * @Date 2024/1/13 21:56
 */

@Mapper
public interface QuestionDao extends BaseMapper<Question> {


    /**
     * 查询数量
     * @return
     */
    Integer findQuestoinDetailCount();

    /**
     * 分页查询试题详情
     * @param currentPage
     * @param size
     * @return
     */
    List<QuestionVo> findQuestoinDetail(@Param("currentPage") Integer currentPage, @Param("size") Integer size);

    /**
     * 分页条件查询试题详情
     * @param currentPage
     * @param size
     * @return
     */
    List<QuestionVo> findQuestoinDetailCondition(@Param("currentPage") Integer currentPage, @Param("size") Integer size, @Param("key")String key);

    /**
     * 查询所有
     */
    List<QuestionVo> findAll();

    /**
     * 查询最新发布的前10篇试题
     * @return
     */
    List<QuestionTopVo> findQuestionTop();

    /**
     * 查询试题详情
     */
    QuestionVo findQuestionDetailById(@Param("id")Integer id);

    /**
     * 根据类型id查询
     */
    List<QuestionVo> findQuestionByType(@Param("currentPage") Integer currentPage,
                                        @Param("size") Integer size,
                                        @Param("typeId")Integer typeId);

    /**
     * 查询类型条件数量
     */
    Integer findQuestionByTypeCount( @Param("typeId")Integer typeId);
    /**
     * 根据标签id查询
     */
    List<QuestionVo> findQuestionByTag(@Param("currentPage") Integer currentPage,
                                        @Param("size") Integer size,
                                        @Param("tagId")Integer tagId);
    /**
     * 查询类型条件数量
     */
    Integer findQuestionByTagCount( @Param("tagId")Integer tagId);

    /**
     * 查询试题归档
     */
    List<ArchiveQuestionVo> findArchiveQuestionList(@Param("currentPage") Integer currentPage,
                                                    @Param("size") Integer size);

}
